SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

  
CREATE PROC [dbo].[SP_TXMVTO_CNTB_I15]            
/*-------------------------------------------------------*/            
/*--- Empresa             :  OFISIS S.A.              ---*/            
/*--- Cliente             :  OFISIS S.A.              ---*/            
/*--- Sistema             :  Contabilidad             ---*/            
/*--- Modulo              :  Empresa                  ---*/            
/*--- Programa            :  Cierre de Fin de Ao                   ---*/            
/*--- Script              :                           ---*/            
/*--- Nombre SP           :  SP_TXMVTO_CNTB_I15       ---*/            
/*--- Desarrollado Por    :  OFISIS S.A.              ---*/            
/*--- Fecha Creaci?n      :  20/04/1999               ---*/            
/*--- Base de Datos       :  Microsoft SQL Server     ---*/            
/*--- Versi?n             :  6.5                      ---*/            
/*--- Invoca a SP         :  SP_TXMVTO_CNTB_I15       ---*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*----- Modificado 1 por : percy garcia               ---*/            
/*----- Fecha Modifica   : 05/06/2004                 ---*/            
/*----- Detalle Modifica : usuario creacion y modif   ---*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/        
/*----- Modificado 21 por : PDGV                      ---*/        
/*----- Fecha Modifica   : 20/01/2005                 ---*/        
/*----- Detalle Modifica : cierre POR UNIDAD          ---*/        
/*----- se coloco el contador de sec para que aumente   
solo cuando va a grabar                              --- */  
/*-------------------------------------------------------*/            
/*--- Comentarios         :                           ---*/             
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*--- Drop Proc SP_TXMVTO_CNTB_I15                    ---*/            
/*--- Grant All On SP_TXMVTO_CNTB_I15 To Publi        ---*/            
/*--- SP_TXMVTO_CNTB_I15 '01', 1, 1999, 13, '01',  
'001',5,1                                             ---*/            
/*-------------------------------------------------------*/            
@ISCO_EMPR          TD_VC_002,            
@ISCO_USUA          TD_VC_008,  
@IDFE_USUA          TD_DT_001,  
@INNU_CNTB_EMPR     TD_IN_001,            
@INNU_ANNO          TD_IN_004_ANNO,            
@INNU_MESE          TD_IN_002_MESE,            
@ISCO_UNID_CNTB     TD_VC_003,            
@ISCO_OPRC_CNTB     TD_VC_003,            
@INNV_INFO_CNTA     TD_IN_001,             
@INNU_PARA          TD_IN_001,        
@IDFE_ASTO_CNTB     TD_DT_001,       
@ISTI_FILT          TD_VC_001,       
@ISTI_GENE_ASTO     TD_VC_003,       
@ISCO_UNID_FILT     TD_VC_003         
            
As            
            
Begin             
            
Declare            
@CSCO_CNTA_EMPR     TD_VC_020_CNTA,            
@CSCO_CNTA_CIER     TD_VC_020_CNTA,            
            
-- Variables de Uso            
@VSCA_WHER          Char(255),            
@VSCA_ORDE          Char(255),            
@VSCA_CURS_0001     Char(2000),            
@VSCA_CURS_0002     Char(255),            
@VSNU_ASTO          TD_VC_010,            
@VNIM_MVTO_0001     TD_NU_016_004,            
@VNIM_MVTO_0002     TD_NU_016_004,            
@VNIM_MVTO_CNTB     TD_NU_016_004,            
@VSTI_OPER          TD_VC_003,            
@VSDE_GLOS          TD_VC_100,            
@VNNU_SECU          TD_IN_001,            
@VSCO_MONE          TD_VC_003,     
@VSCO_UNID_CNTB     TD_VC_003,              
@VSCO_UNID_ORIG     TD_VC_003,              
@CSCO_UNID_CNTB     TD_VC_003,    
@VSCO_UNID_EVAL     TD_VC_003    
            
If @INNU_PARA = 1            
Begin            
  Select @VSCA_WHER = "And CO_CNTA_EMPR Like '69%' And CO_CNTA_CIER Like '61%'"            
  Select @VSNU_ASTO = Replicate('0',10-1)+ Convert(Char(1),@INNU_PARA)             
End            
Else If @INNU_PARA = 2    
Begin            
  Select @VSCA_WHER = "And CO_CNTA_EMPR Like '6%' And CO_CNTA_CIER Not Like '61%'            
  And Ltrim(Rtrim(CO_CNTA_CIER)) IS NOT NULL"               
  Select @VSNU_ASTO = Replicate('0',10-1)+ Convert(Char(1),@INNU_PARA)             
End            
Else If @INNU_PARA = 3            
Begin            
  Select @VSCA_WHER = "And CO_CNTA_EMPR Like '7%' And Ltrim(Rtrim(CO_CNTA_CIER)) IS NOT NULL And CO_CNTA_CIER != ''"           
  Select @VSNU_ASTO = Replicate('0',10-1)+ Convert(Char(1),@INNU_PARA)             
End            
Else If @INNU_PARA = 4            
Begin            
  Select @VSCA_WHER = "And CO_CNTA_EMPR Like '9%' And Ltrim(Rtrim(CO_CNTA_CIER)) IS NOT NULL And CO_CNTA_CIER != '' "            
  Select @VSNU_ASTO = Replicate('0',10-1)+ Convert(Char(1),@INNU_PARA)             
End            
Else If @INNU_PARA = 5            
Begin            
  Select @VSCA_WHER = "And CO_CNTA_EMPR Like '8%' And CO_CNTA_CIER Not Like '5%' And (Rtrim(CO_CNTA_CIER)) IS NOT NULL And CO_CNTA_CIER != '' "            
  Select @VSNU_ASTO = Replicate('0',10-1)+ Convert(Char(1),@INNU_PARA)             
End            
Else If @INNU_PARA = 6            
Begin            
  Select @VSCA_WHER = "And CO_CNTA_EMPR Like '89%' And CO_CNTA_CIER Like '89%'"            
  Select @VSNU_ASTO = Replicate('0',10-1)+ Convert(Char(1),@INNU_PARA)             
End            
Else If @INNU_PARA = 7            
Begin            
  Select @VSCA_WHER = "And CO_CNTA_EMPR Like '8%' And CO_CNTA_CIER Like '5%'"            
  Select @VSNU_ASTO = Replicate('0',10-1)+ Convert(Char(1),@INNU_PARA)             
End            
            
Select @VSCO_MONE = CO_MONE            
From   TTCNTB_EMPR            
Where  CO_EMPR = @ISCO_EMPR            
And    NU_CNTB_EMPR = @INNU_CNTB_EMPR            
            
Select @VNNU_SECU = 0            
Select @VSDE_GLOS = 'ASIENTO DE CIERRE DE FIN DE A?O'            
      
Select @VSCA_ORDE = ' '    
    
If @ISTI_GENE_ASTO = 'ING'    
 Begin     
 Select @VSCA_CURS_0001 = 'Select NULL, CO_CNTA_EMPR,CO_CNTA_CIER From TMPLAN_EMPR Where  CO_EMPR= "' + @ISCO_EMPR  + '"'+            
 ' And TI_SITU = "ACT" '+ ' And Datalength(CO_CNTA_EMPR)= ' + convert (char(1),@INNV_INFO_CNTA )            
 End     
If @ISTI_GENE_ASTO = 'ORI'    
 Begin     
 Select @VSCA_CURS_0001 = 'Select TMUNID_CNTB.CO_UNID_CNTB, TMPLAN_EMPR.CO_CNTA_EMPR, TMPLAN_EMPR.CO_CNTA_CIER From TMPLAN_EMPR, TMUNID_CNTB Where  TMPLAN_EMPR.CO_EMPR= "' + @ISCO_EMPR  + '"'+            
 ' And TMPLAN_EMPR.TI_SITU = "ACT" '+ ' And Datalength(TMPLAN_EMPR.CO_CNTA_EMPR)= ' + convert (char(1),@INNV_INFO_CNTA)    
 + ' And TMPLAN_EMPR.CO_EMPR = TMUNID_CNTB.CO_EMPR '           
 + ' And  (( "' + @ISTI_FILT + '" = "T") Or ( "' + @ISTI_FILT + '" = "P" And TMUNID_CNTB.CO_UNID_CNTB = "' + @ISCO_UNID_FILT + '"))  '        
 Select @VSCA_ORDE = ' Order By TMUNID_CNTB.CO_UNID_CNTB, TMPLAN_EMPR.CO_CNTA_EMPR '    
 End     
            
Select @VSCA_CURS_0002 =  ' ' + @VSCA_WHER            
            
Exec( 'Declare CU_TXMVTO_CNTB_I15_1 Cursor For ' + @VSCA_CURS_0001 +  @VSCA_CURS_0002 + @VSCA_ORDE)            
            
Open CU_TXMVTO_CNTB_I15_1            
Fetch CU_TXMVTO_CNTB_I15_1 Into @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSCO_CNTA_CIER            
            
While @@fetch_status = 0            
Begin       
  
    If @ISTI_GENE_ASTO = 'ORI'        
      Begin         
         Select @VSCO_UNID_ORIG = @CSCO_UNID_CNTB       
          If ((@CSCO_UNID_CNTB != @VSCO_UNID_EVAL) Or (@VSCO_UNID_EVAL IS NULL))  
            Begin   
              Select @VNNU_SECU = 0  
              Select @VSCO_UNID_EVAL = @CSCO_UNID_CNTB         
            End   
      End   
  
   
    --- SI INGRESA UNA UNIDAD DONDE GRABAR ASTO      
    If IsNull(Rtrim(@ISCO_UNID_CNTB), '') != ''      
      Begin         
       Select @VSCO_UNID_CNTB = @ISCO_UNID_CNTB        
      End         
    Else         
      Begin         
       Select @VSCO_UNID_CNTB = @CSCO_UNID_CNTB        
      End            
            
  Select @VNIM_MVTO_0001 = 0  
  Select @VNIM_MVTO_0002 = 0  
            
  -- Saca Saldo de la Cuenta hasta el mes anterior            
  Select @VNIM_MVTO_0001 = IsNull( Sum(Isnull(IM_CARG_CNTB, 0) - Isnull(IM_ABON_CNTB, 0)),0 )            
  From   TASALD_EMPR            
Where  CO_EMPR = @ISCO_EMPR            
  And    NU_CNTB_EMPR = @INNU_CNTB_EMPR            
  And    ((@CSCO_UNID_CNTB IS NULL) Or (CO_UNID_CNTB = @CSCO_UNID_CNTB))    
  And  ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And CO_UNID_CNTB = @ISCO_UNID_FILT))            
  And    NU_ANNO = @INNU_ANNO            
  And    NU_MESE < @INNU_MESE            
  And    CO_CNTA_EMPR = @CSCO_CNTA_EMPR            
  And    TI_AUXI_EMPR IS NULL            
  And    CO_AUXI_EMPR IS NULL            
  And    CO_ORDE_SERV IS NULL     
            
 If @VNIM_MVTO_0001 Is Null Select @VNIM_MVTO_0001 = 0            
            
  -- Saca Saldos del Mes para algunos casos            
  If @INNU_PARA IN (2,5,6,7)            
  Begin            
    Select @VNIM_MVTO_0002 = Isnull(Sum(((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_CNTB, 0)) -            
                                 ((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_CNTB, 0))), 0)            
    From   TXMVTO_CNTB t1, TMOPRC_CNTB t2            
    Where  t1.CO_EMPR = @ISCO_EMPR            
    And    t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR            
    And    ((@CSCO_UNID_CNTB IS NULL) Or (CO_UNID_CNTB = @CSCO_UNID_CNTB))    
    And    ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And t1.CO_UNID_CNTB = @ISCO_UNID_FILT))            
    And    t1.NU_ANNO = @INNU_ANNO            
    And    t1.NU_MESE = @INNU_MESE            
    And    t1.CO_CNTA_EMPR = @CSCO_CNTA_EMPR            
    And    t1.CO_OPRC_CNTB = @ISCO_OPRC_CNTB            
    And    t1.SI_MVTO_CNTB = 'APR'            
    And    t2.CO_EMPR = t1.CO_EMPR            
    And    t2.CO_OPRC_CNTB = t1.CO_OPRC_CNTB            
    And    t2.TI_SITU = 'ACT'            
                
    If @VNIM_MVTO_0002 Is Null Select @VNIM_MVTO_0002 = 0            
  End            
      
  Else            
      
  Begin            
    Select @VNIM_MVTO_0002 = 0            
  End            
      
  -- Saldo Total            
  Select @VNIM_MVTO_CNTB = @VNIM_MVTO_0001 + @VNIM_MVTO_0002            
            
      -- Selecciona Tipo Operacion            
      If   @VNIM_MVTO_CNTB > 0              
           Select @VSTI_OPER = 'ABO'            
      Else             
           Select @VSTI_OPER = 'CAR'            
            
    Select @VNIM_MVTO_CNTB = Abs(@VNIM_MVTO_CNTB)            
            
    If @VNIM_MVTO_CNTB > 0            
    Begin            
            
      If @VNIM_MVTO_0001 Is Null Select @VNIM_MVTO_0001 = 0            
      If @VNIM_MVTO_CNTB Is Null Select @VNIM_MVTO_CNTB = 0            
  
  
      Select @VNNU_SECU = @VNNU_SECU + 1            
            
      -- Inserta Cuenta            
      Insert Into TXMVTO_CNTB(            
           CO_EMPR,NU_CNTB_EMPR,CO_UNID_CNTB,CO_OPRC_CNTB,             
           NU_ANNO,NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,            
           CO_CNTA_EMPR,TI_AUXI_EMPR,CO_AUXI_EMPR,TI_DOCU,            
           NU_DOCU,FE_DOCU,FE_DOCU_VENC,TI_CAMB,CO_MONE,            
           FA_CAMB,FA_CAMB_DIAR,TI_OPER,IM_MVTO_ORIG,            
           IM_MVTO_CNTB,DE_GLOS,TI_DOCU_REFE,NU_DOCU_REFE,            
           FE_DOCU_REFE,NO_GIRA,FE_ENTR_CHEQ,FE_PROG_CHEQ,            
           CO_ORDE_SERV,SI_MVTO_CNTB,            
           CO_UNID_ORIG,CO_OPRC_ORIG,NU_ASTO_ORIG,ST_OTRS,            
           NU_PROC,NU_PROC_SECU,ST_GEST, ST_REDO,            
           CO_USUA_MODI,FE_USUA_MODI, CO_USUA_CREA , FE_USUA_CREA)            
     Values(            
           @ISCO_EMPR,@INNU_CNTB_EMPR,@VSCO_UNID_CNTB,@ISCO_OPRC_CNTB,         
           @INNU_ANNO,@INNU_MESE,@VSNU_ASTO,@VNNU_SECU,@IDFE_ASTO_CNTB,         
           @CSCO_CNTA_EMPR,NULL,NULL,NULL,            
           NULL,NULL,NULL,'PAC', @VSCO_MONE,            
           1,1,@VSTI_OPER,@VNIM_MVTO_CNTB,                      @VNIM_MVTO_CNTB,@VSDE_GLOS,NULL,NULL,      
           NULL,NULL,NULL,NULL, NULL,'APR',            
           @VSCO_UNID_ORIG,NULL,NULL,NULL,NULL,NULL,'N','N',              
           @ISCO_USUA,@IDFE_USUA, @ISCO_USUA , @IDFE_USUA)            
              
    -- Selecciona Tipo Operacion            
     If   @VSTI_OPER = 'ABO'              
          Select @VSTI_OPER = 'CAR'            
     Else             
          Select @VSTI_OPER = 'ABO'            
            
      Select @VNNU_SECU = @VNNU_SECU + 1              
      If @VNIM_MVTO_0001 Is Null             
         Select @VNIM_MVTO_0001 = 0            
      If @VNIM_MVTO_CNTB Is Null             
        Select @VNIM_MVTO_CNTB = 0            
            
      -- Inserta Cuenta            
      Insert Into TXMVTO_CNTB(            
           CO_EMPR,NU_CNTB_EMPR,CO_UNID_CNTB,CO_OPRC_CNTB,            
           NU_ANNO,NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,            
           CO_CNTA_EMPR,TI_AUXI_EMPR,CO_AUXI_EMPR,TI_DOCU,            
           NU_DOCU,FE_DOCU,FE_DOCU_VENC,TI_CAMB,CO_MONE,            
           FA_CAMB,FA_CAMB_DIAR,TI_OPER,IM_MVTO_ORIG, IM_MVTO_CNTB,            
           DE_GLOS,TI_DOCU_REFE,NU_DOCU_REFE,FE_DOCU_REFE,NO_GIRA,        
           FE_ENTR_CHEQ,FE_PROG_CHEQ,CO_ORDE_SERV,SI_MVTO_CNTB,            
           CO_UNID_ORIG,CO_OPRC_ORIG,NU_ASTO_ORIG,ST_OTRS,            
           NU_PROC,NU_PROC_SECU,ST_GEST, ST_REDO,            
           CO_USUA_MODI,FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA)            
     Values(            
           @ISCO_EMPR,@INNU_CNTB_EMPR,@VSCO_UNID_CNTB,@ISCO_OPRC_CNTB,            
           @INNU_ANNO,@INNU_MESE,@VSNU_ASTO,@VNNU_SECU,@IDFE_ASTO_CNTB,            
           @CSCO_CNTA_CIER,NULL,NULL,NULL,            
           NULL,NULL,NULL,'PAC', @VSCO_MONE,            
           1,1,@VSTI_OPER,@VNIM_MVTO_CNTB,            
           @VNIM_MVTO_CNTB,@VSDE_GLOS,NULL,NULL,            
           NULL,NULL,NULL,NULL, NULL,'APR',             
           @VSCO_UNID_ORIG,NULL,NULL,NULL,NULL,NULL,'N', 'N',            
           @ISCO_USUA,@IDFE_USUA, @ISCO_USUA, @IDFE_USUA)            
    End            
            
  Fetch CU_TXMVTO_CNTB_I15_1 Into @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSCO_CNTA_CIER                   
End            
            
Close CU_TXMVTO_CNTB_I15_1            
Deallocate CU_TXMVTO_CNTB_I15_1            
End            
/*----                            Fin                           -----*/            
  
  
  
  
  
  
  
      
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
GO
